package com.jd.tuning.jvm.lock.syn;

import java.util.List;
import java.util.Vector;

/**
 * synchronized的优化机制
 * 1、锁消除
 */
public class SynchronizedTest3 {

    public static void main(String[] args) {
        someMethod();
    }


    /**
     *  synchronized 作用于局部变量
     *  什么情况会有线程安全问题
     *       * 1、存在共享数据
     *      * 2、多个线程同时操作共享数据
     *   object局部变量，不存在共享数据，多个线程someMethod执行方法不存在线程安全
     *   JDK通过逃逸分析，检测，自动消除锁
     *   逃逸分析：分析变量能否逃出它的作用域
     */
    private static void someMethod() {
        Object object=new Object();
        //object 局部变量 ，作用域，这个方法，方法执行完就没了，object不可逃逸
        synchronized (object){
            System.out.println(object);
        }
    }


}
